[hacker.org] XOR Cipher¶
XOR Cipher1¶
_encode = '3d2e212b20226f3c2a2a2b'.decode('hex')
text = ''
for l in _encode:
m = l.encode('hex')
m = int(m,16)^79
text += chr(m)
print text
XOR Cipher2¶
_encode = '948881859781c4979186898d90c4c68c85878f85808b8b808881c6c4828b96c4908c8d97c4878c858888818a8381'.decode('hex')
for x in range(255):
text = ''
for l in _encode:
m = l.encode('hex')
m = int(m,16)^x
if 31<m and m<128:
text += chr(m)
if len(text)==len(_encode):
print text
XOR Cipher3¶
_encode = '31cf55aa0c91fb6fcb33f34793fe00c72ebc4c88fd57dc6ba71e71b759d83588'.decode('hex')
for x in range(255):
for y in range(255):
tmp = x
text = ''
for l in _encode:
m = l.encode('hex')
m = tmp ^ int(m,16)
text += chr(m)
tmp = (tmp+y)%256
print text
XOR Long Cipher¶
- 키 길이 4바이트
- 평문 첫 바이트는 키 첫번째 바이트로 암호화되어 있음
- 평문 다섯번째 바이트는 키 첫번째 바이트로 암호화를 얻을 수 있음
_encode = '8776459cf37d459fbb7b5ecfbb7f5fcfb23e478aaa3e4389f378439aa13e4e96a77b5fc1f358439df36a4486a03e4381b63e5580a66c0c8ebd6d5b8aa13e459cf34e4d9fa67f02cf90714288a17f589abf7f5886bc705fcfbc700c96bc6b5ecfb7775f8cbc68499daa3f'.decode('hex')
_list = ''
_key = 'd31e2cef'.decode('hex')
for num in range(len(_encode)/4):
_list += _encode[4*num+3]
for x in range(255):
text = ''
for l in _list:
m = l.encode('hex')
m = int(m,16)^x
if 31<m and m<128 and m!=36 and m!=92 and m!=59:
text += chr(m)
if len(text)==len(_list):
print x
print text
papua
# 211 T hhay rt seunr uCrlooodo # 30 hcea f eFt rs Paoaannuiv # 44 iirskoobsohoy wia.ntts rse # 239 sp efuy.rinoaesp gui y cr
Feedback Cipher¶
_encode = '751a6f1d3d5c3241365321016c05620a7e5e34413246660461412e5a2e412c49254a24'.decode('hex')
text = ''
for l in range(len(_encode)-1):
x = _encode[l].encode('hex')
y = _encode[l+1].encode('hex')
m = int(x,16)^int(y,16)
text += chr(m)
print text
Feedback Cipher 2¶
_encode = '310a7718781f734c31425e775a314f3b40132c5122720599b2dfb790fd8ff894add2a4bdc5d1a6e987a0ed8eee94adcfbb94ee88f382127819623a404d3f'.decode('hex')
for x in range(255):
k = (0x3f+x)%0x100
text = ''
for l in _encode:
l = l.encode('hex')
l = int(l,16)
m = l ^ k
k = (l + x) % 0x100
if 31<m and m<128:
#print chr(m)
text += chr(m)
if len(text)+1==len(_encode):
print text
base7 convert¶
a = 28679718602997181072337614380936720482949
def convert(n, base):
T = "0123456789ABCDEF"
q, r = divmod(n, base)
if q == 0:
return T[r]
else:
return convert(q, base) + T[r]
print convert(a, 7)